package com.kexio.enterprise.integration.file.statistics;

import java.time.LocalDateTime;
import java.util.Map;

/**
 * 存储统计信息
 * 
 * @author Kexio
 * @since 1.0.0
 */
public class StorageStatistics {
    private String storageType;
    private String bucket;
    private long totalFiles;
    private long totalSize;
    private long usedSpace;
    private long availableSpace;
    private double spaceUsagePercentage;
    private long temporaryFiles;
    private long expiredFiles;
    private long encryptedFiles;
    private LocalDateTime startTime;
    private LocalDateTime endTime;
    private long uploadCount;
    private long downloadCount;
    private long deleteCount;
    private Map<String, Long> contentTypeStats; // 按文件类型统计
    private Map<String, Long> directoryStats; // 按目录统计
    private Map<String, Long> dailyStats; // 按日统计

    // Getters and Setters
    public String getStorageType() { return storageType; }
    public void setStorageType(String storageType) { this.storageType = storageType; }
    
    public String getBucket() { return bucket; }
    public void setBucket(String bucket) { this.bucket = bucket; }
    
    public long getTotalFiles() { return totalFiles; }
    public void setTotalFiles(long totalFiles) { this.totalFiles = totalFiles; }
    
    public long getTotalSize() { return totalSize; }
    public void setTotalSize(long totalSize) { this.totalSize = totalSize; }
    
    public long getUsedSpace() { return usedSpace; }
    public void setUsedSpace(long usedSpace) { this.usedSpace = usedSpace; }
    
    public long getAvailableSpace() { return availableSpace; }
    public void setAvailableSpace(long availableSpace) { this.availableSpace = availableSpace; }
    
    public double getSpaceUsagePercentage() { return spaceUsagePercentage; }
    public void setSpaceUsagePercentage(double spaceUsagePercentage) { this.spaceUsagePercentage = spaceUsagePercentage; }
    
    public long getTemporaryFiles() { return temporaryFiles; }
    public void setTemporaryFiles(long temporaryFiles) { this.temporaryFiles = temporaryFiles; }
    
    public long getExpiredFiles() { return expiredFiles; }
    public void setExpiredFiles(long expiredFiles) { this.expiredFiles = expiredFiles; }
    
    public long getEncryptedFiles() { return encryptedFiles; }
    public void setEncryptedFiles(long encryptedFiles) { this.encryptedFiles = encryptedFiles; }
    
    public LocalDateTime getStartTime() { return startTime; }
    public void setStartTime(LocalDateTime startTime) { this.startTime = startTime; }
    
    public LocalDateTime getEndTime() { return endTime; }
    public void setEndTime(LocalDateTime endTime) { this.endTime = endTime; }
    
    public long getUploadCount() { return uploadCount; }
    public void setUploadCount(long uploadCount) { this.uploadCount = uploadCount; }
    
    public long getDownloadCount() { return downloadCount; }
    public void setDownloadCount(long downloadCount) { this.downloadCount = downloadCount; }
    
    public long getDeleteCount() { return deleteCount; }
    public void setDeleteCount(long deleteCount) { this.deleteCount = deleteCount; }
    
    public Map<String, Long> getContentTypeStats() { return contentTypeStats; }
    public void setContentTypeStats(Map<String, Long> contentTypeStats) { this.contentTypeStats = contentTypeStats; }
    
    public Map<String, Long> getDirectoryStats() { return directoryStats; }
    public void setDirectoryStats(Map<String, Long> directoryStats) { this.directoryStats = directoryStats; }
    
    public Map<String, Long> getDailyStats() { return dailyStats; }
    public void setDailyStats(Map<String, Long> dailyStats) { this.dailyStats = dailyStats; }
    
    // 别名方法以兼容旧代码
    public double getUsagePercentage() { return spaceUsagePercentage; }
    public void setUsagePercentage(double usagePercentage) { this.spaceUsagePercentage = usagePercentage; }
}
